<?php
/**
* This file is part of the upgrade process.
*
* @package SendStudio
*/

/**
* Do a sanity check to make sure the upgrade api has been included.
*/
if (!class_exists('Upgrade_API', false)) {
	exit;
}

/**
* This class runs one change for the upgrade process.
* The Upgrade_API looks for a RunUpgrade method to call.
* That should return false for failure
* It should return true for success or if the change has already been made.
*
* @package SendStudio
*/
class move_settings_to_database extends Upgrade_API
{
	/**
	* RunUpgrade
	* Runs the query for the upgrade process
	* and returns the result from the query.
	* The calling function looks for a true or false result
	*
	* @return Mixed Returns true if the condition is already met (eg the column already exists).
	*  Returns false if the database query can't be run.
	*  Returns the resource from the query (which is then checked to be true).
	*/
	function RunUpgrade()
	{
		if (!$this->TableExists('config_settings')) {
			return false;
		}

		if (!class_exists('Settings_API')) {
			require_once(SENDSTUDIO_API_DIRECTORY . '/settings.php');
		}

		$settings_api = new Settings_API();
		$areas = $settings_api->Get('Areas');
		unset($areas['config']);
		foreach ($areas as $area) {
			$value = '';
			if (defined('SENDSTUDIO_' . $area)) {
				$value = stripslashes(constant('SENDSTUDIO_' . $area));
			}

			if ($area == 'SYSTEM_DATABASE_VERSION') {
				$value = $settings_api->Db->FetchOne("SELECT version() AS version");
			}

			$query = "INSERT INTO " . SENDSTUDIO_TABLEPREFIX . "config_settings(area, areavalue) VALUES('" . $this->Db->Quote($area) . "', '" . $this->Db->Quote($value) . "')";
			$result = $this->Db->Query($query);
		}
		return true;
	}
}
